#ifndef Space_h
#define Space_h

#include <list>
#include <map>
#include <queue>
#include <stack>
#include <vector>

#include "DamageWidget.h"
#include "ExplosionEffect.h"
#include "Game.h"
#include "Object.h"
#include "Planet.h"
#include "Missile.h"
#include "randInt.h"
#include "Vector2.h"
#include "Locker.h"

class Space : public Locker
{
public:
	Space();
	Space(Game *p_game);
	~Space();

	std::vector<Object*> getObjects();
	std::list<Widget*> getWidgets();

	void addObject(Object *p_kaka);
	void removeObject(Object* p_object);

	void clear();
	void collisionDetect();
	void blowObject(Object* p_object);
	void destroyDeadObjects();

	void doPhysics(double p_dt);

protected:
	std::vector<Object*> m_objects;
	Game *m_game;
	std::list<Widget*> m_widgets;
};

#endif //Space_h
